/* * Copyright (c) 2020 InterDigital Communications, Inc * * Licensed under the Apache License, Version 2.0 (the \"License\"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an \"AS IS\" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * AdvantEDGE Platform Controller REST API * * This API is the main Platform Controller API for scenario configuration & sandbox management

**Micro-service**
[meep-pfm-ctrl](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-platform-ctrl)

**Type & Usage**
Platform main interface used by controller software to configure scenarios and manage sandboxes in the AdvantEDGE platform

**Details**
API details available at _your-AdvantEDGE-ip-address/api_ * * API version: 1.0.0 * Contact: AdvantEDGE@InterDigital.com * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ package server import ( "net/http" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" sessions "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" ) type User struct { Username string Password string SessionId string Active bool } var user1 = User{"u1", "1234", "NA", false} var user2 = User{"u2", "2345", "NA", false} var user3 = User{"u3", "3456", "NA", false} // Map of configured users - Key=Username var ConfiguredUsers map[string]*User func init() { // add preconfigured users ConfiguredUsers = make(map[string]*User) ConfiguredUsers[user1.Username] = &user1 ConfiguredUsers[user2.Username] = &user2 ConfiguredUsers[user3.Username] = &user3 } func authenticateUser(username string, password string) bool { // Verify user name user, ok := ConfiguredUsers[username] if !ok { return false } // Verify password if user.Password != password { return false } return true } func uaLoginUser(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGIN -----") // Get form data username := r.FormValue("username") password := r.FormValue("password") // Validate user credentials if !authenticateUser(username, password) { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } // Create new session if none found _, err := pfmCtrl.sessionStore.GetSession(r) if err != nil { var sessionInfo sessions.SessionInfo sessionInfo.Username = username err = pfmCtrl.sessionStore.CreateSession(&sessionInfo, w, r) if err != nil { log.Error("Failed to create session with err: ", err.Error()) return } } else { log.Info("Already logged in...") } w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } func uaLogoutUser(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGOUT -----") // Delete session err := pfmCtrl.sessionStore.DeleteSession(w, r) if err != nil { log.Error("Failed to delete session with err: ", err.Error()) return } w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) }